草庐IT

c++ - QML Qt openUrlExternally

全部标签

c++ - 如何使用 scanf 验证输入

如何使用scanf验证用户输入。现在我有这样的东西,但不起作用。注意:我有atoi只是为了验证scanf验证是否有效。scanf("%[0987654321.-]s",buf);i=atoi(buf);if(i)index=i; 最佳答案 使用scanf()通常不是用户输入的好主意,因为失败会将FILE指针留在未知位置。那是因为scanf代表“扫描格式化”,并且未格式化比用户输入多一点。我建议使用fgets()获取一行,然后在字符串上使用sscanf()来实际检查和处理它。这还允许您检查字符串中是否包含您想要的字符(通过循环或使用正

c++ - 奇怪的 C++ 模板问题

所以基本上任务是我们必须创建一个双向链表,它是通用模板化的,而不是锁定到单一数据类型。我试过用gcc和msvc编译,两个编译器都给我大致相同的错误,所以我假设这只是我的错误编码,而不是一个编译器或另一个编译器的古怪之处。目前,我收到错误消息说我在linkList.h中的类不是模板../linkList.h:34:error:‘llist’isnotatemplatetype../linkList.h:143:error:‘iter’isnotatemplatetype../josephus.cpp:14:error:‘llist’isnotatemplate../josephus.cp

c++ - FILE* 无处可去

有没有办法得到一个什么都不指向的C流对象(FILE*对象)?我知道fopen("/dev/null","w");可以,但我想知道是否有更好的方法。最好是该位将数据存储在比posix层更高的级别,这样也更便于移植。 最佳答案 否:Unix上的/dev/null和Windows上的NUL:(在没有Cygwin或等效软件的情况下)是最好的方法。(问题的原始版本提到了fopen("/dev/null","o");但此后已修复。)哦,fopen()的"o"标志是不可移植的。可移植形式包括标志字符r、w、a、b、+各种组合。

c++ - malloced 数组和新数组之间有区别吗

我通常使用C++编程,但正在为我的char*使用一些库函数。一些像“getline”这样的联机帮助页说输入应该是一个malloced数组。可以改用“new”吗?对于我的小样本,我可以看到它有效,但这会不会在某个时候导致一些奇怪的未定义行为?我知道“new”应该匹配“delete”,而“malloc”应该匹配“free”。我也没有使用std::string。这是故意的。谢谢 最佳答案 传递给getline()的缓冲区必须被分配。原因是如果需要更多空间,getline()可能会在缓冲区上调用realloc()。realloc()与fre

c++ - 在 C/C++ 中检测运行时变量的修改

我正在用C++开发一个库,用户/程序员将在其中扩展具有方法initArray的类BaseClass。此方法应由用户/程序员实现,并且通常应初始化数组m_arr的所有元素。这是一个片段,修改为这个例子:classBaseClass{public:BaseClass(intn){m_arr=newdouble[n];size=n;};virtual~BaseClass();intsize;double*m_arr;virtualintinitArray();};有时,用户/程序员会实现一个initArray,但不会初始化m_arr的某些元素。我想要的是在我的库中创建一个函数来检查initA

c++ - 带有插入符号操作的字符 XOR

我很清楚在位上使用异或。但在这里,XOR处理的是单个字符。那么这是否意味着构成字符的字节正在被异或?这看起来像什么?#includeintmain(){charstring[11]="Anicecat";charkey[11]="ABCDEFGHIJ";for(intx=0;x我知道位XORed看起来像这样:101011000110 最佳答案 XOR有一个很好的特性,即如果您使用相同的数据对某些内容进行两次XOR,您将获得原始数据。您发布的代码是一些基本的加密功能,它使用key“加密”字符串。生成的密文可以通过相同的程序进行解密。

C++ 固定大小数组与同一类型的多个对象

我想知道(除了明显的语法差异之外)拥有一个包含一个对象(相同类型)的多个实例的类或该类型的固定大小的对象数组之间是否会有任何效率差异。在代码中:structA{doublex;doubley;doublez;};structB{doublexvec[3];};实际上,我会使用boost::arrays,它是C风格数组的更好的C++替代品。我主要关心构造/析构和读/写这样的替身,因为这些类通常只是为了调用其中一个成员函数而构造一次。感谢您的帮助/建议。 最佳答案 通常这两个结构的表示完全相同。但是,如果您为您的用例选择了错误的,则性能

c++ - 将大于 long 类型最大值的值传递给 C 中的 fseek

我需要将一些值传递给C中的fseek()方法,这些值大于有符号长型的最大值(2147483647)。但是,如果我确实喜欢下面的结果值是-1,这不是成功。无论如何我可以做到这一点吗?//fpisthepointertofopenmethodunsignedlonglongindex=2147483648;intstatus=fseek(fp,index,SEEK_SET); 最佳答案 既然你用“Objective-C”标记了它,我假设你也在考虑Macintosh。Checkoutfseeko(需要一个64位数字)。

c++ - 使用 zlib 的 gzip 文件访问功能的未压缩文件大小

使用linux命令行工具gzip我可以使用gzip-l知道压缩文件的未压缩大小。我在zlib手册的“gzip文件访问函数”部分找不到类似的函数。在这个链接上,我找到了一个解决方案http://www.abeel.be/content/determine-uncompressed-size-gzip-file这涉及读取文件的最后4个字节,但我现在正在避免它,因为我更喜欢使用lib的函数。 最佳答案 没有可靠的方法可以在不解压缩或至少解码整个文件的情况下获取gzip文件的未压缩大小。原因有以下三个。首先,关于未压缩长度的唯一信息是gzi

c++ - C 中的 Malloc 和结构给我错误(遵循教程)?

因此,我正在学习有关C的教程,但由于结构使用了malloc函数,而我的编译器(VisualStudioC++10.0)似乎无法正常运行该函数,因此我一直停留在结构上。所以我完全按照说明进行操作,我可以编译C,除了在这个特定的代码中,它给了我一个错误(代码从教程网站上直接获取):#include#includestructnode{intx;structnode*next;};intmain(){/*Thiswon'tchange,orwewouldlosethelistinmemory*/structnode*root;/*Thiswillpointtoeachnodeasittrav